import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../../../core/base/base_controller.dart';
import '../../../routes/app_routes.dart';
import '../../home/models/device_item.dart';

/// 设备详情控制器
class DeviceDetailController extends BaseController {
  // 设备ID
  final RxString deviceId = ''.obs;
  
  // 设备信息
  final Rxn<DeviceItem> device = Rxn<DeviceItem>();
  
  // 历史数据
  final RxList<Map<String, dynamic>> historyData = <Map<String, dynamic>>[].obs;
  
  // 是否正在刷新
  final RxBool isRefreshing = false.obs;
  
  // 控制面板值
  final RxDouble brightness = 100.0.obs;
  final RxInt colorTemp = 4000.obs;
  final RxBool isScheduled = false.obs;
  final RxString scheduleTime = '20:00'.obs;
  
  @override
  void onInit() {
    super.onInit();
    
    // 从路由参数获取设备ID
    String? id = Get.parameters['id'];
    if (id != null && id.isNotEmpty) {
      deviceId.value = id;
      _loadDeviceDetails();
    } else {
      Get.snackbar('错误', '无效的设备ID');
      Get.back();
    }
  }
  
  /// 加载设备详情
  void _loadDeviceDetails() {
    showLoading();
    
    // TODO: 实际实现应从API获取设备详情
    Future.delayed(const Duration(seconds: 1), () {
      hideLoading();
      
      // 模拟设备数据
      device.value = DeviceItem(
        id: deviceId.value,
        name: '客厅灯',
        type: '灯光',
        status: 'online',
        iconData: 0xe3ac, // 灯光图标
        isOn: true,
      );
      
      // 模拟历史数据
      _loadHistoryData();
    });
  }
  
  /// 加载历史数据
  void _loadHistoryData() {
    // TODO: 实际实现应从API获取历史数据
    historyData.value = [
      {
        'time': '今天 08:00',
        'action': '开启设备',
        'user': '用户A',
      },
      {
        'time': '今天 12:30',
        'action': '调整亮度到80%',
        'user': '用户B',
      },
      {
        'time': '今天 18:00',
        'action': '关闭设备',
        'user': '用户A',
      },
      {
        'time': '今天 20:00',
        'action': '开启设备',
        'user': '定时任务',
      },
      {
        'time': '昨天 09:15',
        'action': '开启设备',
        'user': '用户A',
      },
    ];
  }
  
  /// 刷新数据
  Future<void> refreshData() async {
    isRefreshing.value = true;
    await Future.delayed(const Duration(seconds: 1));
    _loadDeviceDetails();
    isRefreshing.value = false;
  }
  
  /// 切换设备状态
  void toggleDevice() {
    if (device.value == null) return;
    
    final updatedDevice = device.value!.copyWith(
      isOn: !device.value!.isOn,
    );
    
    device.value = updatedDevice;
    
    // TODO: 实际实现应发送命令到设备
    showSuccess('已${updatedDevice.isOn ? '开启' : '关闭'} ${updatedDevice.name}');
  }
  
  /// 更新亮度
  void updateBrightness(double value) {
    brightness.value = value;
    
    // TODO: 实际实现应发送命令到设备
    showInfo('亮度已调整到${value.toInt()}%');
  }
  
  /// 更新色温
  void updateColorTemp(int value) {
    colorTemp.value = value;
    
    // TODO: 实际实现应发送命令到设备
    showInfo('色温已调整到${value}K');
  }
  
  /// 设置定时
  void setSchedule(bool value) {
    isScheduled.value = value;
    
    // TODO: 实际实现应发送命令到设备
    if (value) {
      showSuccess('已设置定时任务: ${scheduleTime.value}');
    } else {
      showSuccess('已取消定时任务');
    }
  }
  
  /// 修改定时时间
  void changeScheduleTime(TimeOfDay time) {
    scheduleTime.value = '${time.hour.toString().padLeft(2, '0')}:${time.minute.toString().padLeft(2, '0')}';
    
    if (isScheduled.value) {
      // TODO: 实际实现应发送命令到设备
      showSuccess('已更新定时任务: ${scheduleTime.value}');
    }
  }
  
  /// 删除设备
  void deleteDevice() {
    Get.dialog(
      AlertDialog(
        title: const Text('删除设备'),
        content: const Text('确定要删除该设备吗？此操作无法撤销。'),
        actions: [
          TextButton(
            onPressed: () => Get.back(),
            child: const Text('取消'),
          ),
          TextButton(
            onPressed: () {
              Get.back();
              // TODO: 实际实现应调用API删除设备
              showSuccess('设备已删除');
              Get.offAllNamed(AppRoutes.home);
            },
            style: TextButton.styleFrom(foregroundColor: Colors.red),
            child: const Text('删除'),
          ),
        ],
      ),
    );
  }
} 